/**
 * 选择排序
 * 从未排序区间找到最小值放入已排序区间末尾
 * 精髓在于 找到未排序区间里最小值得下标，然后与未排序区间得第一个元素交换位置
 */

export {};

function selectSort(arr: number[]): number[] {
  const n = arr.length;
  for (let i = 0; i < n; i++) {
    let min = arr[i];

    let minIndex = i;

    for (let j = i + 1; j < n; j++) {
      if (min < arr[j]) {
        minIndex = j;
        min = arr[j];
      }
    }

    arr[minIndex] = arr[i];
    arr[i] = min;
  }

  return arr;
}

console.log(selectSort([6, 5, 3, 4, 2, 1, 7]));
